#include <ebase/types.h>
#include <ebase/trace.h>
#include <ebase/builtins.h>

#include <common/return_codes.h>

#include "isi.h"
#include "isi_iss.h"
#include "isi_priv.h"
#include "OV8856_MIPI_priv.h"


#define MIRROR
#undef FLIP
/*****************************************************************************
 * DEFINES
 *****************************************************************************/


/*****************************************************************************
 * GLOBALS
 *****************************************************************************/

const IsiRegDescription_t OV8856_g_aRegDescription_twolane[] =
{
	//Sysclk 144Mhz, MIPI2_720Mbps/Lane, 30.8Fps.
	//; Line_length =3744, Frame_length =1246
	{0x0100,0x00,"0x0100",eReadWrite},
	{0x031e,0x0c,"0x0100",eReadWrite},
	{0x3000,0x00,"0x0100",eReadWrite},
	{0x300e,0x00,"0x0100",eReadWrite},
	{0x3010,0x00,"0x0100",eReadWrite},
	{0x3015,0x84,"0x0100",eReadWrite},
	{0x3018,0x32,"0x0100",eReadWrite},
	{0x3033,0x24,"0x0100",eReadWrite},
	{0x3500,0x00,"0x0100",eReadWrite},
	{0x3503,0x08,"0x0100",eReadWrite},
	{0x3505,0x83,"0x0100",eReadWrite},
	{0x3508,0x01,"0x0100",eReadWrite},
	{0x3509,0x80,"0x0100",eReadWrite},
	{0x350c,0x00,"0x0100",eReadWrite},
	{0x350d,0x80,"0x0100",eReadWrite},
	{0x350e,0x04,"0x0100",eReadWrite},
	{0x350f,0x00,"0x0100",eReadWrite},
	{0x3510,0x00,"0x0100",eReadWrite},
	{0x3511,0x02,"0x0100",eReadWrite},
	{0x3512,0x00,"0x0100",eReadWrite},
	{0x3600,0x72,"0x0100",eReadWrite},
	{0x3601,0x40,"0x0100",eReadWrite},
	{0x3602,0x30,"0x0100",eReadWrite},
	{0x3610,0xc5,"0x0100",eReadWrite},
	{0x3611,0x58,"0x0100",eReadWrite},
	{0x3612,0x5c,"0x0100",eReadWrite},
	{0x3613,0x5a,"0x0100",eReadWrite},
	{0x3614,0x60,"0x0100",eReadWrite},
	{0x3628,0xff,"0x0100",eReadWrite},
	{0x3629,0xff,"0x0100",eReadWrite},
	{0x362a,0xff,"0x0100",eReadWrite},
	{0x3633,0x10,"0x0100",eReadWrite},
	{0x3634,0x10,"0x0100",eReadWrite},
	{0x3635,0x10,"0x0100",eReadWrite},
	{0x3636,0x10,"0x0100",eReadWrite},
	{0x3663,0x08,"0x0100",eReadWrite},
	{0x3669,0x34,"0x0100",eReadWrite},
	{0x3706,0x86,"0x0100",eReadWrite},
	{0x370b,0x7e,"0x0100",eReadWrite},
	{0x3730,0x12,"0x0100",eReadWrite},
	{0x3733,0x10,"0x0100",eReadWrite},
	{0x3764,0x00,"0x0100",eReadWrite},
	{0x3765,0x00,"0x0100",eReadWrite},
	{0x3769,0x62,"0x0100",eReadWrite},
	{0x376a,0x2a,"0x0100",eReadWrite},
	{0x376b,0x30,"0x0100",eReadWrite},
	{0x3780,0x00,"0x0100",eReadWrite},
	{0x3781,0x24,"0x0100",eReadWrite},
	{0x3782,0x00,"0x0100",eReadWrite},
	{0x3783,0x23,"0x0100",eReadWrite},
	{0x3798,0x2f,"0x0100",eReadWrite},
	{0x37a1,0x60,"0x0100",eReadWrite},
	{0x37a8,0x6a,"0x0100",eReadWrite},
	{0x37ab,0x3f,"0x0100",eReadWrite},
	{0x37c3,0xf1,"0x0100",eReadWrite},
	{0x37c9,0x80,"0x0100",eReadWrite},
	{0x37cb,0x03,"0x0100",eReadWrite},
	{0x37cc,0x0a,"0x0100",eReadWrite},
	{0x37cd,0x16,"0x0100",eReadWrite},
	{0x37ce,0x1f,"0x0100",eReadWrite},
	{0x3800,0x00,"0x0100",eReadWrite},
	{0x3801,0x00,"0x0100",eReadWrite},
	{0x3802,0x00,"0x0100",eReadWrite},
	{0x3803,0x0c,"0x0100",eReadWrite},
	{0x3804,0x0c,"0x0100",eReadWrite},
	{0x3805,0xdf,"0x0100",eReadWrite},
	{0x3806,0x09,"0x0100",eReadWrite},
	{0x3807,0xa3,"0x0100",eReadWrite},
	{0x3810,0x00,"0x0100",eReadWrite},
	{0x3812,0x00,"0x0100",eReadWrite},
	{0x3815,0x01,"0x0100",eReadWrite},
	{0x3816,0x00,"0x0100",eReadWrite},
	{0x3817,0x00,"0x0100",eReadWrite},
	{0x3818,0x00,"0x0100",eReadWrite},
	{0x3819,0x00,"0x0100",eReadWrite},
	{0x382b,0x01,"0x0100",eReadWrite},
	{0x3830,0x06,"0x0100",eReadWrite},
	{0x3836,0x02,"0x0100",eReadWrite},
	{0x3862,0x04,"0x0100",eReadWrite},
	{0x3863,0x08,"0x0100",eReadWrite},
	{0x3cc0,0x33,"0x0100",eReadWrite},
	{0x3d85,0x17,"0x0100",eReadWrite},
	{0x3d8c,0x73,"0x0100",eReadWrite},
	{0x3d8d,0xde,"0x0100",eReadWrite},
	{0x4001,0xe0,"0x0100",eReadWrite},
	{0x4003,0x40,"0x0100",eReadWrite},
	{0x4008,0x00,"0x0100",eReadWrite},
	{0x400f,0x80,"0x0100",eReadWrite},
	{0x4010,0xf0,"0x0100",eReadWrite},
	{0x4011,0xff,"0x0100",eReadWrite},
	{0x4012,0x02,"0x0100",eReadWrite},
	{0x4013,0x01,"0x0100",eReadWrite},
	{0x4014,0x01,"0x0100",eReadWrite},
	{0x4015,0x01,"0x0100",eReadWrite},
	{0x4042,0x00,"0x0100",eReadWrite},
	{0x4043,0x80,"0x0100",eReadWrite},
	{0x4044,0x00,"0x0100",eReadWrite},
	{0x4045,0x80,"0x0100",eReadWrite},
	{0x4046,0x00,"0x0100",eReadWrite},
	{0x4047,0x80,"0x0100",eReadWrite},
	{0x4048,0x00,"0x0100",eReadWrite},
	{0x4049,0x80,"0x0100",eReadWrite},
	{0x4041,0x03,"0x0100",eReadWrite},
	{0x404c,0x20,"0x0100",eReadWrite},
	{0x404d,0x00,"0x0100",eReadWrite},
	{0x404e,0x20,"0x0100",eReadWrite},
	{0x4203,0x80,"0x0100",eReadWrite},
	{0x4307,0x30,"0x0100",eReadWrite},
	{0x4317,0x00,"0x0100",eReadWrite},
	{0x4503,0x08,"0x0100",eReadWrite},
	{0x4601,0x80,"0x0100",eReadWrite},
	{0x4816,0x53,"0x0100",eReadWrite},
	{0x481b,0x58,"0x0100",eReadWrite},
	{0x481f,0x27,"0x0100",eReadWrite},
	{0x5000,0x77,"0x0100",eReadWrite},
	{0x5001,0x0a,"0x0100",eReadWrite},
	{0x5004,0x04,"0x0100",eReadWrite},
	{0x502e,0x03,"0x0100",eReadWrite},
	{0x5030,0x41,"0x0100",eReadWrite},
	{0x579a,0x00,"0x0100",eReadWrite},
	{0x579c,0x00,"0x0100",eReadWrite},
	{0x5780,0x14,"0x0100",eReadWrite},
	{0x5781,0x0f,"0x0100",eReadWrite},
	{0x5782,0x44,"0x0100",eReadWrite},
	{0x5783,0x02,"0x0100",eReadWrite},
	{0x5784,0x01,"0x0100",eReadWrite},
	{0x5785,0x01,"0x0100",eReadWrite},
	{0x5786,0x00,"0x0100",eReadWrite},
	{0x5787,0x04,"0x0100",eReadWrite},
	{0x5788,0x02,"0x0100",eReadWrite},
	{0x5789,0x0f,"0x0100",eReadWrite},
	{0x578a,0xfd,"0x0100",eReadWrite},
	{0x578b,0xf5,"0x0100",eReadWrite},
	{0x578c,0xf5,"0x0100",eReadWrite},
	{0x578d,0x03,"0x0100",eReadWrite},
	{0x578e,0x08,"0x0100",eReadWrite},
	{0x578f,0x0c,"0x0100",eReadWrite},
	{0x5790,0x08,"0x0100",eReadWrite},
	{0x5791,0x04,"0x0100",eReadWrite},
	{0x5792,0x00,"0x0100",eReadWrite},
	{0x5793,0x52,"0x0100",eReadWrite},
	{0x5794,0xa3,"0x0100",eReadWrite},
	{0x59f8,0x3d,"0x0100",eReadWrite},
	{0x5a08,0x02,"0x0100",eReadWrite},
	{0x5b00,0x02,"0x0100",eReadWrite},
	{0x5b01,0x10,"0x0100",eReadWrite},
	{0x5b02,0x03,"0x0100",eReadWrite},
	{0x5b03,0xcf,"0x0100",eReadWrite},
	{0x5b05,0x6c,"0x0100",eReadWrite},
	{0x5e00,0x00,"0x0100",eReadWrite},
	//{0x0100,0x01,"0x0100",eReadWrite},
#ifdef FLIP
#ifdef MIRROR
	{0x3820, 0xd6,"0x0100",eReadWrite},
	{0x3821, 0x67,"0x0100",eReadWrite},
	{0x502e, 0x00,"0x0100",eReadWrite},
	{0x5001, 0x0e,"0x0100",eReadWrite},
	{0x5004, 0x04,"0x0100",eReadWrite},
	{0x376b, 0x36,"0x0100",eReadWrite},
#else
	{0x3820, 0xd6,"0x0100",eReadWrite},
	{0x3821, 0x61,"0x0100",eReadWrite},
	{0x502e, 0x00,"0x0100",eReadWrite},
	{0x5001, 0x0e,"0x0100",eReadWrite},
	{0x5004, 0x00,"0x0100",eReadWrite},
	{0x376b, 0x36,"0x0100",eReadWrite},
#endif
#else
#ifdef MIRROR
	{0x3820, 0x90,"0x0100",eReadWrite},
	{0x3821, 0x67,"0x0100",eReadWrite},
	{0x502e, 0x03,"0x0100",eReadWrite},
	{0x5001, 0x0a,"0x0100",eReadWrite},
	{0x5004, 0x04,"0x0100",eReadWrite},
	{0x376b, 0x30,"0x0100",eReadWrite},
#else
	{0x3820, 0x90,"0x0100",eReadWrite},
	{0x3821, 0x61,"0x0100",eReadWrite},
	{0x502e, 0x03,"0x0100",eReadWrite},
	{0x5001, 0x0a,"0x0100",eReadWrite},
	{0x5004, 0x00,"0x0100",eReadWrite},
	{0x376b, 0x30,"0x0100",eReadWrite},
#endif
#endif
	//{0x0100, 0x01,"0x0100",eReadWrite},
	{0x0000 ,0x00,"eTableEnd",eTableEnd}
};

const IsiRegDescription_t OV8856_g_1632x1224_twolane[] =
{
 	{0x0100,0x00,"0x0100",eReadWrite},
	{0x0302,0x3c,"0x0100",eReadWrite},
	{0x0303,0x01,"0x0100",eReadWrite},
	{0x3501,0x4c,"0x0100",eReadWrite},
	{0x3502,0xe0,"0x0100",eReadWrite},
	{0x366e,0x08,"0x0100",eReadWrite},
	{0x3714,0x27,"0x0100",eReadWrite},
	{0x37c2,0x14,"0x0100",eReadWrite},
	{0x3808,0x06,"0x0100",eReadWrite},
	{0x3809,0x60,"0x0100",eReadWrite},
	{0x380a,0x04,"0x0100",eReadWrite},
	{0x380b,0xc8,"0x0100",eReadWrite},
	{0x380c,0x0e,"0x0100",eReadWrite},
	{0x380d,0xa0,"0x0100",eReadWrite},
	{0x380e,0x04,"0x0100",eReadWrite},
	{0x380f,0xde,"0x0100",eReadWrite},
	{0x3811,0x08,"0x0100",eReadWrite},
	{0x3813,0x02,"0x0100",eReadWrite},
	{0x3814,0x03,"0x0100",eReadWrite},
	{0x3820,0x90,"0x0100",eReadWrite},
	{0x3821,0x67,"0x0100",eReadWrite},
	{0x382a,0x03,"0x0100",eReadWrite},
	{0x4009,0x05,"0x0100",eReadWrite},
	{0x4837,0x16,"0x0100",eReadWrite},
	{0x5795,0x00,"0x0100",eReadWrite},
	{0x5796,0x10,"0x0100",eReadWrite},
	{0x5797,0x10,"0x0100",eReadWrite},
	{0x5798,0x73,"0x0100",eReadWrite},
	{0x5799,0x73,"0x0100",eReadWrite},
	{0x579b,0x28,"0x0100",eReadWrite},
	{0x579d,0x16,"0x0100",eReadWrite},
	{0x579e,0x06,"0x0100",eReadWrite},
	{0x579f,0x20,"0x0100",eReadWrite},
	{0x57a0,0x04,"0x0100",eReadWrite},
	{0x57a1,0xa0,"0x0100",eReadWrite},
	//{0x0100,0x01,"0x0100",eReadWrite},
	{0x0000 ,0x00,"eTableEnd",eTableEnd}
};
const IsiRegDescription_t OV8856_g_1632x1224P30_twolane_fpschg[] =
{    
	{0x380e, 0x04,"0x0100",eReadWrite}, // VTS H							 
	{0x380f, 0xde,"0x0100",eReadWrite}, // VTS L
	{0x0000 ,0x00,"eTableEnd",eTableEnd}

};

const IsiRegDescription_t OV8856_g_1632x1224P25_twolane_fpschg[] =
{  	
	{0x380e, 0x05,"0x0100",eReadWrite}, // VTS H							 
	{0x380f, 0xd7,"0x0100",eReadWrite}, // VTS L
	{0x0000 ,0x00,"eTableEnd",eTableEnd}
};


const IsiRegDescription_t OV8856_g_1632x1224P20_twolane_fpschg[] =
{
    {0x380e, 0x07,"0x0100",eReadWrite}, // VTS H							 
	{0x380f, 0x4e,"0x0100",eReadWrite}, // VTS L
	{0x0000 ,0x00,"eTableEnd",eTableEnd}

};

const IsiRegDescription_t OV8856_g_1632x1224P15_twolane_fpschg[] =
{
		
	{0x380e, 0x09,"0x0100",eReadWrite}, // VTS H							 
	{0x380f, 0xbc,"0x0100",eReadWrite}, // VTS L
	{0x0000 ,0x00,"eTableEnd",eTableEnd}

};

const IsiRegDescription_t OV8856_g_1632x1224P10_twolane_fpschg[] =
{ 
	{0x380e, 0x0e,"0x0100",eReadWrite}, // VTS H							 
	{0x380f, 0x9a,"0x0100",eReadWrite}, // VTS L	
	{0x0000 ,0x00,"eTableEnd",eTableEnd}

};

const IsiRegDescription_t OV8856_g_3264x2448_twolane[] =
{
//; Sysclk 144Mhz, MIPI2_1272Mbps/Lane, 30Fps.
//; Line_length =1932, Frame_length =2482
	{0x0100,0x00,"0x0100",eReadWrite},
	{0x0302,0x3c,"0x0100",eReadWrite},
	{0x0303,0x01,"0x0100",eReadWrite},
	{0x3501,0x9a,"0x0100",eReadWrite},
	{0x3502,0x20,"0x0100",eReadWrite},
	{0x366e,0x10,"0x0100",eReadWrite},
	{0x3714,0x23,"0x0100",eReadWrite},
	{0x37c2,0x04,"0x0100",eReadWrite},
	{0x3808,0x0c,"0x0100",eReadWrite},
	{0x3809,0xc0,"0x0100",eReadWrite},
	{0x380a,0x09,"0x0100",eReadWrite},
	{0x380b,0x90,"0x0100",eReadWrite},
	{0x380c,0x0f,"0x0100",eReadWrite},
	{0x380d,0x20,"0x0100",eReadWrite},
	{0x380e,0x09,"0x0100",eReadWrite},
	{0x380f,0xb2,"0x0100",eReadWrite},
	{0x3811,0x10,"0x0100",eReadWrite},
	{0x3813,0x04,"0x0100",eReadWrite},
	{0x3814,0x01,"0x0100",eReadWrite},
	{0x3820,0x80,"0x0100",eReadWrite},
	{0x3821,0x46,"0x0100",eReadWrite},
	{0x382a,0x01,"0x0100",eReadWrite},
	{0x4009,0x0b,"0x0100",eReadWrite},
	{0x4837,0x16,"0x0100",eReadWrite},
	{0x5795,0x02,"0x0100",eReadWrite},
	{0x5796,0x20,"0x0100",eReadWrite},
	{0x5797,0x20,"0x0100",eReadWrite},
	{0x5798,0xd5,"0x0100",eReadWrite},
	{0x5799,0xd5,"0x0100",eReadWrite},
	{0x579b,0x50,"0x0100",eReadWrite},
	{0x579d,0x2c,"0x0100",eReadWrite},
	{0x579e,0x0c,"0x0100",eReadWrite},
	{0x579f,0x40,"0x0100",eReadWrite},
	{0x57a0,0x09,"0x0100",eReadWrite},
	{0x57a1,0x40,"0x0100",eReadWrite},
	//{0x0100,0x01,"0x0100",eReadWrite},
	{0x0000 ,0x00,"eTableEnd",eTableEnd}

};
const IsiRegDescription_t OV8856_g_3264x2448P7_twolane_fpschg[] =
{
    {0x380e, 0x14,"0x0100",eReadWrite}, // VTS H						
	{0x380f, 0xc6,"0x0100",eReadWrite}, // VTS L						
    {0x0000 ,0x00,"eTableEnd",eTableEnd}
};

const IsiRegDescription_t OV8856_g_3264x2448P15_twolane_fpschg[] =
{
    {0x380e, 0x09,"0x0100",eReadWrite}, // VTS H						
	{0x380f, 0xb2,"0x0100",eReadWrite}, // VTS L						
    {0x0000 ,0x00,"eTableEnd",eTableEnd}
};



const IsiRegDescription_t OV8856_g_aRegDescription_fourlane[] =
{
	{0x0103, 0x01,"0x0100",eReadWrite},
	{0x0302, 0x3c,"0x0100",eReadWrite},
	{0x0303, 0x01,"0x0100",eReadWrite},
	{0x031e, 0x0c,"0x0100",eReadWrite},
	{0x3000, 0x00,"0x0100",eReadWrite},
	{0x300e, 0x00,"0x0100",eReadWrite},
	{0x3010, 0x00,"0x0100",eReadWrite},
	{0x3015, 0x84,"0x0100",eReadWrite},
	{0x3018, 0x72,"0x0100",eReadWrite},
	{0x3033, 0x24,"0x0100",eReadWrite},
	{0x3500, 0x00,"0x0100",eReadWrite},
	{0x3501, 0x4c,"0x0100",eReadWrite},
	{0x3502, 0xe0,"0x0100",eReadWrite},
	{0x3503, 0x08,"0x0100",eReadWrite},
	{0x3505, 0x83,"0x0100",eReadWrite},
	{0x3508, 0x01,"0x0100",eReadWrite},
	{0x3509, 0x80,"0x0100",eReadWrite},
	{0x350c, 0x00,"0x0100",eReadWrite},
	{0x350d, 0x80,"0x0100",eReadWrite},
	{0x350e, 0x04,"0x0100",eReadWrite},
	{0x350f, 0x00,"0x0100",eReadWrite},
	{0x3510, 0x00,"0x0100",eReadWrite},
	{0x3511, 0x02,"0x0100",eReadWrite},
	{0x3512, 0x00,"0x0100",eReadWrite},
	{0x3600, 0x72,"0x0100",eReadWrite},
	{0x3601, 0x40,"0x0100",eReadWrite},
	{0x3602, 0x30,"0x0100",eReadWrite},
	{0x3610, 0xc5,"0x0100",eReadWrite},
	{0x3611, 0x58,"0x0100",eReadWrite},
	{0x3612, 0x5c,"0x0100",eReadWrite},
	{0x3613, 0x5a,"0x0100",eReadWrite},
	{0x3614, 0x60,"0x0100",eReadWrite},
	{0x3628, 0xff,"0x0100",eReadWrite},
	{0x3629, 0xff,"0x0100",eReadWrite},
	{0x362a, 0xff,"0x0100",eReadWrite},
	{0x3633, 0x10,"0x0100",eReadWrite},
	{0x3634, 0x10,"0x0100",eReadWrite},
	{0x3635, 0x10,"0x0100",eReadWrite},
	{0x3636, 0x10,"0x0100",eReadWrite},
	{0x3663, 0x08,"0x0100",eReadWrite},
	{0x3669, 0x34,"0x0100",eReadWrite},
	{0x366e, 0x08,"0x0100",eReadWrite},
	{0x3706, 0x86,"0x0100",eReadWrite},
	{0x370b, 0x7e,"0x0100",eReadWrite},
	{0x3714, 0x27,"0x0100",eReadWrite},
	{0x3730, 0x12,"0x0100",eReadWrite},
	{0x3733, 0x10,"0x0100",eReadWrite},
	{0x3764, 0x00,"0x0100",eReadWrite},
	{0x3765, 0x00,"0x0100",eReadWrite},
	{0x3769, 0x62,"0x0100",eReadWrite},
	{0x376a, 0x2a,"0x0100",eReadWrite},
	{0x376b, 0x30,"0x0100",eReadWrite},
	{0x3780, 0x00,"0x0100",eReadWrite},
	{0x3781, 0x24,"0x0100",eReadWrite},
	{0x3782, 0x00,"0x0100",eReadWrite},
	{0x3783, 0x23,"0x0100",eReadWrite},
	{0x3798, 0x2f,"0x0100",eReadWrite},
	{0x37a1, 0x60,"0x0100",eReadWrite},
	{0x37a8, 0x6a,"0x0100",eReadWrite},
	{0x37ab, 0x3f,"0x0100",eReadWrite},
	{0x37c2, 0x14,"0x0100",eReadWrite},
	{0x37c3, 0xf1,"0x0100",eReadWrite},
	{0x37c9, 0x80,"0x0100",eReadWrite},
	{0x37cb, 0x03,"0x0100",eReadWrite},
	{0x37cc, 0x0a,"0x0100",eReadWrite},
	{0x37cd, 0x16,"0x0100",eReadWrite},
	{0x37ce, 0x1f,"0x0100",eReadWrite},
	{0x3800, 0x00,"0x0100",eReadWrite},
	{0x3801, 0x00,"0x0100",eReadWrite},
	{0x3802, 0x00,"0x0100",eReadWrite},
	{0x3803, 0x0c,"0x0100",eReadWrite},
	{0x3804, 0x0c,"0x0100",eReadWrite},
	{0x3805, 0xdf,"0x0100",eReadWrite},
	{0x3806, 0x09,"0x0100",eReadWrite},
	{0x3807, 0xa3,"0x0100",eReadWrite},
	{0x3808, 0x06,"0x0100",eReadWrite},
	{0x3809, 0x60,"0x0100",eReadWrite},
	{0x380a, 0x04,"0x0100",eReadWrite},
	{0x380b, 0xc8,"0x0100",eReadWrite},
	{0x380c, 0x07,"0x0100",eReadWrite},
	{0x380d, 0x8c,"0x0100",eReadWrite},
	{0x380e, 0x09,"0x0100",eReadWrite},//04
	{0x380f, 0xb2,"0x0100",eReadWrite},//de
	{0x3810, 0x00,"0x0100",eReadWrite},
	{0x3811, 0x08,"0x0100",eReadWrite},
	{0x3812, 0x00,"0x0100",eReadWrite},
	{0x3813, 0x02,"0x0100",eReadWrite},
	{0x3814, 0x03,"0x0100",eReadWrite},
	{0x3815, 0x01,"0x0100",eReadWrite},
	{0x3816, 0x00,"0x0100",eReadWrite},
	{0x3817, 0x00,"0x0100",eReadWrite},
	{0x3818, 0x00,"0x0100",eReadWrite},
	{0x3819, 0x00,"0x0100",eReadWrite},
	{0x3820, 0x90,"0x0100",eReadWrite},
	{0x3821, 0x67,"0x0100",eReadWrite},
	{0x382a, 0x03,"0x0100",eReadWrite},
	{0x382b, 0x01,"0x0100",eReadWrite},
	{0x3830, 0x06,"0x0100",eReadWrite},
	{0x3836, 0x02,"0x0100",eReadWrite},
	{0x3862, 0x04,"0x0100",eReadWrite},
	{0x3863, 0x08,"0x0100",eReadWrite},
	{0x3cc0, 0x33,"0x0100",eReadWrite},
	{0x3d85, 0x17,"0x0100",eReadWrite},
	{0x3d8c, 0x73,"0x0100",eReadWrite},
	{0x3d8d, 0xde,"0x0100",eReadWrite},
	{0x4001, 0xe0,"0x0100",eReadWrite},
	{0x4003, 0x40,"0x0100",eReadWrite},
	{0x4008, 0x00,"0x0100",eReadWrite},
	{0x4009, 0x05,"0x0100",eReadWrite},
	{0x400f, 0x80,"0x0100",eReadWrite},
	{0x4010, 0xf0,"0x0100",eReadWrite},
	{0x4011, 0xff,"0x0100",eReadWrite},
	{0x4012, 0x02,"0x0100",eReadWrite},
	{0x4013, 0x01,"0x0100",eReadWrite},
	{0x4014, 0x01,"0x0100",eReadWrite},
	{0x4015, 0x01,"0x0100",eReadWrite},
	{0x4042, 0x00,"0x0100",eReadWrite},
	{0x4043, 0x80,"0x0100",eReadWrite},
	{0x4044, 0x00,"0x0100",eReadWrite},
	{0x4045, 0x80,"0x0100",eReadWrite},
	{0x4046, 0x00,"0x0100",eReadWrite},
	{0x4047, 0x80,"0x0100",eReadWrite},
	{0x4048, 0x00,"0x0100",eReadWrite},
	{0x4049, 0x80,"0x0100",eReadWrite},
	{0x4041, 0x03,"0x0100",eReadWrite},
	{0x404c, 0x20,"0x0100",eReadWrite},
	{0x404d, 0x00,"0x0100",eReadWrite},
	{0x404e, 0x20,"0x0100",eReadWrite},
	{0x4203, 0x80,"0x0100",eReadWrite},
	{0x4307, 0x30,"0x0100",eReadWrite},
	{0x4317, 0x00,"0x0100",eReadWrite},
	{0x4503, 0x08,"0x0100",eReadWrite},
	{0x4601, 0x80,"0x0100",eReadWrite},
	{0x4816, 0x53,"0x0100",eReadWrite},
	{0x481b, 0x58,"0x0100",eReadWrite},
	{0x481f, 0x27,"0x0100",eReadWrite},
	{0x4837, 0x16,"0x0100",eReadWrite},
	{0x5000, 0x77,"0x0100",eReadWrite},
	{0x5001, 0x0a,"0x0100",eReadWrite},
	{0x5004, 0x04,"0x0100",eReadWrite},
	{0x502e, 0x03,"0x0100",eReadWrite},
	{0x5030, 0x41,"0x0100",eReadWrite},
	{0x5795, 0x00,"0x0100",eReadWrite},
	{0x5796, 0x10,"0x0100",eReadWrite},
	{0x5797, 0x10,"0x0100",eReadWrite},
	{0x5798, 0x73,"0x0100",eReadWrite},
	{0x5799, 0x73,"0x0100",eReadWrite},
	{0x579a, 0x00,"0x0100",eReadWrite},
	{0x579b, 0x28,"0x0100",eReadWrite},
	{0x579c, 0x00,"0x0100",eReadWrite},
	{0x579d, 0x16,"0x0100",eReadWrite},
	{0x579e, 0x06,"0x0100",eReadWrite},
	{0x579f, 0x20,"0x0100",eReadWrite},
	{0x57a0, 0x04,"0x0100",eReadWrite},
	{0x57a1, 0xa0,"0x0100",eReadWrite},
	//;DPC setting
	{0x5780, 0x14,"0x0100",eReadWrite},
	{0x5781, 0x0f,"0x0100",eReadWrite},
	{0x5782, 0x44,"0x0100",eReadWrite},
	{0x5783, 0x02,"0x0100",eReadWrite},
	{0x5784, 0x01,"0x0100",eReadWrite},
	{0x5785, 0x01,"0x0100",eReadWrite},
	{0x5786, 0x00,"0x0100",eReadWrite},
	{0x5787, 0x04,"0x0100",eReadWrite},
	{0x5788, 0x02,"0x0100",eReadWrite},
	{0x5789, 0x0f,"0x0100",eReadWrite},
	{0x578a, 0xfd,"0x0100",eReadWrite},
	{0x578b, 0xf5,"0x0100",eReadWrite},
	{0x578c, 0xf5,"0x0100",eReadWrite},
	{0x578d, 0x03,"0x0100",eReadWrite},
	{0x578e, 0x08,"0x0100",eReadWrite},
	{0x578f, 0x0c,"0x0100",eReadWrite},
	{0x5790, 0x08,"0x0100",eReadWrite},
	{0x5791, 0x04,"0x0100",eReadWrite},
	{0x5792, 0x00,"0x0100",eReadWrite},
	{0x5793, 0x52,"0x0100",eReadWrite},
	{0x5794, 0xa3,"0x0100",eReadWrite},
	//;
	{0x5a08, 0x02,"0x0100",eReadWrite},
	{0x5b00, 0x02,"0x0100",eReadWrite},
	{0x5b01, 0x10,"0x0100",eReadWrite},
	{0x5b02, 0x03,"0x0100",eReadWrite},
	{0x5b03, 0xcf,"0x0100",eReadWrite},
	{0x5b05, 0x6c,"0x0100",eReadWrite},
	{0x5e00, 0x00,"0x0100",eReadWrite},
	
#ifdef FLIP
#ifdef MIRROR
	{0x3820, 0xd6,"0x0100",eReadWrite},
	{0x3821, 0x67,"0x0100",eReadWrite},
	{0x502e, 0x00,"0x0100",eReadWrite},
	{0x5001, 0x0e,"0x0100",eReadWrite},
	{0x5004, 0x04,"0x0100",eReadWrite},
	{0x376b, 0x36,"0x0100",eReadWrite},
#else
	{0x3820, 0xd6,"0x0100",eReadWrite},
	{0x3821, 0x61,"0x0100",eReadWrite},
	{0x502e, 0x00,"0x0100",eReadWrite},
	{0x5001, 0x0e,"0x0100",eReadWrite},
	{0x5004, 0x00,"0x0100",eReadWrite},
	{0x376b, 0x36,"0x0100",eReadWrite},
#endif
#else
#ifdef MIRROR
	{0x3820, 0x90,"0x0100",eReadWrite},
	{0x3821, 0x67,"0x0100",eReadWrite},
	{0x502e, 0x03,"0x0100",eReadWrite},
	{0x5001, 0x0a,"0x0100",eReadWrite},
	{0x5004, 0x04,"0x0100",eReadWrite},
	{0x376b, 0x30,"0x0100",eReadWrite},
#else
	{0x3820, 0x90,"0x0100",eReadWrite},
	{0x3821, 0x61,"0x0100",eReadWrite},
	{0x502e, 0x03,"0x0100",eReadWrite},
	{0x5001, 0x0a,"0x0100",eReadWrite},
	{0x5004, 0x00,"0x0100",eReadWrite},
	{0x376b, 0x30,"0x0100",eReadWrite},
#endif
#endif
	//{0x0100, 0x01,"0x0100",eReadWrite},

	{0x0000 ,0x00,"eTableEnd",eTableEnd}
	
};

const IsiRegDescription_t OV8856_g_1632x1224_fourlane[] =
{
	//; Sysclk 144Mhz, MIPI4_720Mbps/Lane, 30Fps.
	//;Line_length =1932, Frame_length =2482
	{0x0100, 0x00,"0x0100",eReadWrite},
	{0x3501, 0x4c,"0x0100",eReadWrite},
	{0x3502, 0xe0,"0x0100",eReadWrite},
	{0x366e, 0x08,"0x0100",eReadWrite},
	{0x3714, 0x27,"0x0100",eReadWrite},
	{0x37c2, 0x14,"0x0100",eReadWrite},
	{0x3800, 0x00,"0x0100",eReadWrite},
	{0x3801, 0x00,"0x0100",eReadWrite},
	{0x3802, 0x00,"0x0100",eReadWrite},
	{0x3803, 0x0c,"0x0100",eReadWrite},
	{0x3804, 0x0c,"0x0100",eReadWrite},
	{0x3805, 0xdf,"0x0100",eReadWrite},
	{0x3806, 0x09,"0x0100",eReadWrite},
	{0x3807, 0xa3,"0x0100",eReadWrite},
	{0x3808, 0x06,"0x0100",eReadWrite},
	{0x3809, 0x60,"0x0100",eReadWrite},
	{0x380a, 0x04,"0x0100",eReadWrite},
	{0x380b, 0xc8,"0x0100",eReadWrite},
	{0x380c, 0x07,"0x0100",eReadWrite},
	{0x380d, 0x8c,"0x0100",eReadWrite},
	{0x380e, 0x09,"0x0100",eReadWrite}, //0x04,"0x0100",eReadWrite},
	{0x380f, 0xb2,"0x0100",eReadWrite}, //0xde,"0x0100",eReadWrite},
	{0x3810, 0x00,"0x0100",eReadWrite},
	{0x3811, 0x02,"0x0100",eReadWrite}, //0x08,"0x0100",eReadWrite}, for FOV same with snapshot
	{0x3812, 0x00,"0x0100",eReadWrite},
	{0x3813, 0x02,"0x0100",eReadWrite},
	{0x3814, 0x03,"0x0100",eReadWrite},
	{0x3820, 0x90,"0x0100",eReadWrite},
	{0x3821, 0x67,"0x0100",eReadWrite},
	{0x382a, 0x03,"0x0100",eReadWrite},
	{0x4009, 0x05,"0x0100",eReadWrite},
	{0x4601, 0x80,"0x0100",eReadWrite},
	{0x5795, 0x00,"0x0100",eReadWrite},
	{0x5796, 0x10,"0x0100",eReadWrite},
	{0x5797, 0x10,"0x0100",eReadWrite},
	{0x5798, 0x73,"0x0100",eReadWrite},
	{0x5799, 0x73,"0x0100",eReadWrite},
	{0x579a, 0x00,"0x0100",eReadWrite},
	{0x579b, 0x28,"0x0100",eReadWrite},
	{0x579c, 0x00,"0x0100",eReadWrite},
	{0x579d, 0x16,"0x0100",eReadWrite},
	{0x579e, 0x06,"0x0100",eReadWrite},
	{0x579f, 0x20,"0x0100",eReadWrite},
	{0x57a0, 0x04,"0x0100",eReadWrite},
	{0x57a1, 0xa0,"0x0100",eReadWrite},
	{0x366d, 0x00,"0x0100",eReadWrite},
	{0x5003, 0xc8,"0x0100",eReadWrite},
	{0x5006, 0x00,"0x0100",eReadWrite},
	{0x5007, 0x00,"0x0100",eReadWrite},
	{0x5e10, 0xfc,"0x0100",eReadWrite},
	//{0x0100, 0x01,"0x0100",eReadWrite},
	{0x0000 ,0x00,"eTableEnd",eTableEnd}

};

const IsiRegDescription_t OV8856_g_1632x1224P30_fourlane_fpschg[] =
{    
	{0x380e, 0x09,"0x0100",eReadWrite}, // VTS H							 
	{0x380f, 0xb2,"0x0100",eReadWrite}, // VTS L
	{0x0000 ,0x00,"eTableEnd",eTableEnd}

};

const IsiRegDescription_t OV8856_g_1632x1224P25_fourlane_fpschg[] =
{  	
	{0x380e, 0x0b,"0x0100",eReadWrite}, // VTS H							 
	{0x380f, 0x2a,"0x0100",eReadWrite}, // VTS L
	{0x0000 ,0x00,"eTableEnd",eTableEnd}
};


const IsiRegDescription_t OV8856_g_1632x1224P20_fourlane_fpschg[] =
{
    {0x380e, 0x0e,"0x0100",eReadWrite}, // VTS H							 
	{0x380f, 0x8b,"0x0100",eReadWrite}, // VTS L
	{0x0000 ,0x00,"eTableEnd",eTableEnd}

};

const IsiRegDescription_t OV8856_g_1632x1224P15_fourlane_fpschg[] =
{
		
	{0x380e, 0x13,"0x0100",eReadWrite}, // VTS H							 
	{0x380f, 0x64,"0x0100",eReadWrite}, // VTS L
	{0x0000 ,0x00,"eTableEnd",eTableEnd}

};

const IsiRegDescription_t OV8856_g_1632x1224P10_fourlane_fpschg[] =
{ 
	{0x380e, 0x1d,"0x0100",eReadWrite}, // VTS H							 
	{0x380f, 0x16,"0x0100",eReadWrite}, // VTS L	
	{0x0000 ,0x00,"eTableEnd",eTableEnd}

};
const IsiRegDescription_t OV8856_g_3264x2448_fourlane[] =
{
	// Sysclk 144Mhz, MIPI4_720Mbps/Lane, 30Fps.
	//Line_length =1932, Frame_length =2482
	{0x0100, 0x00,"0x0100",eReadWrite},
	{0x3501, 0x9a,"0x0100",eReadWrite},
	{0x3502, 0x20,"0x0100",eReadWrite},
	{0x366e, 0x10,"0x0100",eReadWrite},
	{0x3714, 0x23,"0x0100",eReadWrite},
	{0x37c2, 0x04,"0x0100",eReadWrite},
	{0x3800, 0x00,"0x0100",eReadWrite},		
	{0x3801, 0x00,"0x0100",eReadWrite},
	{0x3802, 0x00,"0x0100",eReadWrite},
	{0x3803, 0x0c,"0x0100",eReadWrite},
	{0x3804, 0x0c,"0x0100",eReadWrite},
	{0x3805, 0xdf,"0x0100",eReadWrite},
	{0x3806, 0x09,"0x0100",eReadWrite},
	{0x3807, 0xa3,"0x0100",eReadWrite},
	{0x3808, 0x0c,"0x0100",eReadWrite},
	{0x3809, 0xc0,"0x0100",eReadWrite},
	{0x380a, 0x09,"0x0100",eReadWrite},
	{0x380b, 0x90,"0x0100",eReadWrite},
	{0x380c, 0x07,"0x0100",eReadWrite},
	{0x380d, 0x8c,"0x0100",eReadWrite},
	{0x380e, 0x09,"0x0100",eReadWrite},
	{0x380f, 0xb2,"0x0100",eReadWrite},
	{0x3810, 0x00,"0x0100",eReadWrite},
	{0x3811, 0x04,"0x0100",eReadWrite},
	{0x3812, 0x00,"0x0100",eReadWrite},
	{0x3813, 0x02,"0x0100",eReadWrite},
	{0x3814, 0x01,"0x0100",eReadWrite},
	{0x3820, 0x80,"0x0100",eReadWrite},
	{0x3821, 0x46,"0x0100",eReadWrite},
	{0x382a, 0x01,"0x0100",eReadWrite},
	{0x4009, 0x0b,"0x0100",eReadWrite},
	{0x4601, 0x80,"0x0100",eReadWrite},		
	{0x5795, 0x02,"0x0100",eReadWrite},
	{0x5796, 0x20,"0x0100",eReadWrite},
	{0x5797, 0x20,"0x0100",eReadWrite},
	{0x5798, 0xd5,"0x0100",eReadWrite},
	{0x5799, 0xd5,"0x0100",eReadWrite},
	{0x579a, 0x00,"0x0100",eReadWrite},
	{0x579b, 0x50,"0x0100",eReadWrite},
	{0x579c, 0x00,"0x0100",eReadWrite},
	{0x579d, 0x2c,"0x0100",eReadWrite},
	{0x579e, 0x0c,"0x0100",eReadWrite},
	{0x579f, 0x40,"0x0100",eReadWrite},
	{0x57a0, 0x09,"0x0100",eReadWrite},
	{0x57a1, 0x40,"0x0100",eReadWrite},
	{0x366d, 0x00,"0x0100",eReadWrite},
	{0x5003, 0xc8,"0x0100",eReadWrite},
	{0x5006, 0x00,"0x0100",eReadWrite},
	{0x5007, 0x00,"0x0100",eReadWrite},
	{0x5e10, 0xfc,"0x0100",eReadWrite},
	//{0x0100, 0x01,"0x0100",eReadWrite},
	{0x0000 ,0x00,"eTableEnd",eTableEnd}
};




const IsiRegDescription_t OV8856_g_3264x2448P30_fourlane_fpschg[] =
{
    {0x380e, 0x09,"0x0100",eReadWrite}, // VTS H						
	{0x380f, 0xb2,"0x0100",eReadWrite}, // VTS L						
    {0x0000 ,0x00,"eTableEnd",eTableEnd}
};
const IsiRegDescription_t OV8856_g_3264x2448P25_fourlane_fpschg[] =
{
    {0x380e, 0x0b,"0x0100",eReadWrite}, // VTS H						
	{0x380f, 0xa2,"0x0100",eReadWrite}, // VTS L							
    {0x0000 ,0x00,"eTableEnd",eTableEnd}
};
const IsiRegDescription_t OV8856_g_3264x2448P20_fourlane_fpschg[] =
{
    {0x380e, 0x0e,"0x0100",eReadWrite}, // VTS H						
	{0x380f, 0x8b,"0x0100",eReadWrite}, // VTS L							
    {0x0000 ,0x00,"eTableEnd",eTableEnd}
};
const IsiRegDescription_t OV8856_g_3264x2448P15_fourlane_fpschg[] =
{
    {0x380e, 0x13,"0x0100",eReadWrite}, // VTS H						
	{0x380f, 0x64,"0x0100",eReadWrite}, // VTS L							
    {0x0000 ,0x00,"eTableEnd",eTableEnd}
};
const IsiRegDescription_t OV8856_g_3264x2448P10_fourlane_fpschg[] =
{
    {0x380e, 0x1d,"0x0100",eReadWrite}, // VTS H						
	{0x380f, 0x16,"0x0100",eReadWrite}, // VTS L						
    {0x0000 ,0x00,"eTableEnd",eTableEnd}
};

const IsiRegDescription_t OV8856_g_3264x2448P7_fourlane_fpschg[] =
{
    {0x380e, 0x29,"0x0100",eReadWrite}, // VTS H						
	{0x380f, 0x8d,"0x0100",eReadWrite}, // VTS L							
    {0x0000 ,0x00,"eTableEnd",eTableEnd}
};



